﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.UI.HtmlControls;

namespace Tp2
{
    public partial class Profil : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
            {
                SqlConnection connexionBD;
                string cheminBD = Server.MapPath("App_Data/TP2.mdf");
                string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";

                connexionBD = new SqlConnection(chaineConnexion);
                connexionBD.Open();

                Validate();

                if (Page.IsValid)
                {
                    string requeteModif;

                    if (txtMotDePasse.Value.Length == 0)
                    {
                        requeteModif = "UPDATE clients SET" +
                                                " nom = '" + txtNom.Value +
                                                "', prenom = '" + txtPrenom.Value +
                                                "', adresse = '" + txtadresse.Value +
                                                "', ville = '" + txtVille.Value +
                                                "', province = '" + selectProvince.Value +
                                                "', codePostal = '" + txtCode.Value +
                                                "', email = '" + txtEmail.Value +
                                                "' WHERE no =" + hiddenNo.Value;
                    }
                    else
                    {
                        requeteModif = "UPDATE clients SET" +
                                                " nom = '" + txtNom.Value +
                                                "', prenom = '" + txtPrenom.Value +
                                                "', adresse = '" + txtadresse.Value +
                                                "', ville = '" + txtVille.Value +
                                                "', province = '" + selectProvince.Value +
                                                "', codePostal = '" + txtCode.Value +
                                                "', motPasse = '" + txtMotDePasse.Value +
                                                "', email = '" + txtEmail.Value +
                                                "' WHERE no =" + hiddenNo.Value;
                    }

                    SqlCommand commandeModif = new SqlCommand(requeteModif, connexionBD);

                    commandeModif.ExecuteNonQuery();
                    connexionBD.Close();
                    Response.Redirect("ok.aspx");
                }
            }
            else if (Session["login"] != null)
            {
                SqlDataReader lecteurChamps;
                SqlCommand commandChamps;
                SqlConnection connexionBD;
                string cheminBD = Server.MapPath("App_Data/TP2.mdf");
                string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";

                connexionBD = new SqlConnection(chaineConnexion);
                connexionBD.Open();

                String requeteSQL = "SELECT * FROM clients";

                commandChamps = new SqlCommand(requeteSQL, connexionBD);
                lecteurChamps = commandChamps.ExecuteReader();

                while (lecteurChamps.Read())
                {
                    if (Session["login"].ToString() == lecteurChamps["login"].ToString())
                    {
                        hiddenNo.Value = lecteurChamps["no"].ToString();
                        txtNom.Value = lecteurChamps["nom"].ToString();
                        txtPrenom.Value = lecteurChamps["prenom"].ToString();
                        txtadresse.Value = lecteurChamps["adresse"].ToString();
                        txtVille.Value = lecteurChamps["adresse"].ToString();
                        selectProvince.Value = lecteurChamps["province"].ToString();
                        txtCode.Value = lecteurChamps["codePostal"].ToString();
                        txtEmail.Value = lecteurChamps["email"].ToString();
                        txtMotDePasse.Value = "";
                    }
                }
            }
            else
            {
                Response.Redirect("default.aspx");
            }
        }

        protected void ValidationProvince(object source, ServerValidateEventArgs args)
        {
            if (selectProvince.SelectedIndex == 0)
            {
                validationProvince.ErrorMessage = "Choix de province obligatoire";
                args.IsValid = false;
            }
        }

        protected void CustomValidatorMotDePasse_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (txtMotDePasse.Value != txtMotDePasseRepeat.Value)
            {
                CustomValidatorMotDePasse.ErrorMessage = "Mot de passe non identique";
                args.IsValid = false;
            }
            else if ((txtMotDePasse.Value.Length < 5) && (txtMotDePasse.Value.Length > 0))
            {
                CustomValidatorMotDePasse.ErrorMessage = "Mot de passe doit avoir 5 charactères ou plus";
                args.IsValid = false;
            }
        }

        protected void CustomValidatorCourriel_ServerValidate(object source, ServerValidateEventArgs args)
        {
            SqlConnection connexionBD;
            string cheminBD = Server.MapPath("App_Data/TP2.mdf");
            string chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";

            connexionBD = new SqlConnection(chaineConnexion);
            connexionBD.Open();

            SqlDataReader lecteurBDEmail;
            string requeteSQLEmail = "SELECT COUNT(*) AS email FROM clients WHERE email='" + txtEmail.Value + "'";

            SqlCommand commandEmail = new SqlCommand(requeteSQLEmail, connexionBD);
            lecteurBDEmail = commandEmail.ExecuteReader();

            lecteurBDEmail.Read();

            int email = Convert.ToInt32(lecteurBDEmail["email"]);

            lecteurBDEmail.Close();
            connexionBD.Close();

            if (email < 0)
            {
                CustomValidatorCourriel.ErrorMessage = "Courriel déjà utilisé";
                args.IsValid = false;
            }
            else if (txtEmail.Value.Length == 0)
            {
                CustomValidatorCourriel.ErrorMessage = "Courriel obligatoire";
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
                CustomValidatorCourriel.ErrorMessage = "";
            }
        }
    }
}